package com.zhongpengcheng.blog.service;

import com.zhongpengcheng.blog.enums.FileTypeEnum;
import com.zhongpengcheng.blog.pojo.ro.FileUploadRO;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;

/**
 * OSS服务
 * @author ZhongPengCheng
 * @version 1.0
 * @date 2021-12-04 14:35:00
 */
public interface OssService {
    /**
     * 保存文件到OSS
     * @param path 文件保存路径
     * @param file 待保存文件对象
     * @return 实际访问路径
     */
    FileUploadRO save(String path, File file, FileTypeEnum fileType);
    /**
     * 保存文件到OSS
     * @param path 文件保存路径
     * @param multipartFile 待保存文件对象
     * @return 实际访问路径
     */
    FileUploadRO save(String path, MultipartFile multipartFile, FileTypeEnum fileType);
    /**
     * 保存二进制文件到OSS
     * @param path 文件保存路径
     * @param bytes 二进制数组
     * @return 实际访问路径
     */
    FileUploadRO save(String path, byte[] bytes, FileTypeEnum fileType);
    /**
     * 校验目标路径文件是否已存在
     * @param path 文件路径
     * @return 存在返回true，否则返回false
     */
    boolean exists(String path);
    /**
     * 校验目标路径文件是否不存在
     * @param path 文件路径
     * @return 不存在返回true，否则返回false
     */
    boolean notExists(String path);
    /**
     * 为文件生成一个唯一的储存路径
     * @param filename 文件名
     * @param fileType 文件类型
     * @return 唯一的储存路径
     */
    String generateUniquePath(String filename, FileTypeEnum fileType);

    /**
     * 移除文件
     * @param path 文件路径
     * @return 移除成功返回true，否则返回false
     */
    boolean delete(String path);
}
